﻿using System;
using System.Xml.Serialization;

namespace _139_属性_命名与位置属性参数_属性目标
{
    //4.12.2 命名与位置属性参数
    //属性可能具有一些参数。
    //在下面的例子中，我们将XmlElementAttribute应用到一个类中。
    //这个属性告诉XML串行器（位于System.XML.Serialization）一个对象是如何以XML格式表示以及如何接受属性参数的。
    //下面的属性将CustomerEntity类映射到一个名为Customer的XML元素上，这个元素属于命名空间http://oreilly.com
    /*
    [XmlElement("Customer", Namespace = "http://oreilly.com")]
    public class CustomerEntity { }
    */
    //属性参数分为两类：位置和命名。在前一个例子中，第一个参数是位置参数；第二个参数是命名参数。
    //位置参数对应于属性类型的公开构造函数的参数；命名参数则对应于该属性类型的公开字段或公开属性。
    //当指定一个属性时，必须包含对应于其中一个属性构造的位置参数。命名参数则是可选的。

    //4.12.3 属性目标
    //不需要显式指定，属性目标就是它后面紧跟的代码元素而且一般是一个类型或类型成员。然而，也可以给程序集附加一些属性。这要求显示地指定属性的目标。
    class Program
    {
        //下面的例子适用CLSCompliant属性为整个程序集指定CLS的合法性：
        [assembly: CLSCompliant(true)]
        static void Main(string[] args)
        {
        }
    }
}
